home *** CD-ROM | disk | FTP | other *** search
/ Aminet 26 / Aminet 26 (1998)(GTI - Schatztruhe)[!][Aug 1998].iso / XiPaint / Developer / Userport / xsend.c < prev   
C/C++ Source or Header  |  1994-09-24  |  2KB  |  68 lines

  1. /* Sendet Xi-Paint-Screen nach vorne */
  2.  
  3. void send_xi (void);
  4.  
  5. void main (int argc, char *argv[])
  6. {
  7.   send_xi();
  8. }
  9.  
  10. struct XiMessage
  11. {
  12.   struct Message ExecMess;                   /* Exec-Message-Struktur */
  13.   ULONG Label;                           /* Erkennungsmarke, muß 0x12345678 sein */
  14.   UWORD Command;                       /* gewünschtes Kommando, siehe Defines */
  15.   BOOL Success;                           /* bei Reply: Kommando war erfolgreich, wenn TRUE */
  16.   char *ProjectName;                       /* Name des zu bearbeitenden Projekts */
  17.   SHORT Width, Height;                       /* Größe des Projekts */
  18.   UBYTE *Memory;                       /* Zeiger auf Speicher, 4 Byte/Pixel mit RGBA */
  19.   char **ProjectList;                       /* Zeiger auf Liste der Projekt-Namen, bei XI_GET_PROJECT_LIST */
  20.   SHORT ProjectCount;                       /* Anzahl der Projekte */
  21. };
  22.  
  23. #define  XI_SCREEN_TO_FRONT        6
  24.  
  25. void WaitReply (struct MsgPort *ReplyPort, struct Message *WaitMsg)
  26. {
  27.   struct Message *OkMsg;
  28.   BOOL Loop = TRUE;
  29.  
  30.   while (Loop)
  31.   {
  32.     WaitPort (ReplyPort);
  33.  
  34.     while (OkMsg = GetMsg (ReplyPort))
  35.     {
  36.       if (OkMsg == WaitMsg)
  37.     Loop = FALSE;
  38.     }
  39.   }
  40. }
  41.  
  42. void send_xi (void)
  43. {
  44.   struct MsgPort *XiUserPort, *XiReplyPort;
  45.   struct XiMessage XiMsg;
  46.  
  47.   if ((XiUserPort = FindPort ((UBYTE *) "xiuser.port")) != NULL)
  48.   {
  49.     if ((XiReplyPort = CreatePort (NULL, 0)) != NULL)
  50.     {
  51.       memset (&XiMsg, 0, sizeof (struct XiMessage));
  52.  
  53.       XiMsg.ExecMess.mn_Node.ln_Type = NT_MESSAGE;
  54.       XiMsg.ExecMess.mn_Node.ln_Pri = 0;
  55.       XiMsg.ExecMess.mn_Length = sizeof (struct XiMessage);
  56.  
  57.       XiMsg.ExecMess.mn_ReplyPort = XiReplyPort;
  58.       XiMsg.Label = 0x12345678;                   /* Erkennungsmarke für XiPaint, sehr wichtig !!!! */
  59.       XiMsg.Command = XI_SCREEN_TO_FRONT;           /* Kommando ausfüllen */
  60.       PutMsg (XiUserPort, (struct Message *) &XiMsg);       /* Message absenden */
  61.       WaitReply (XiReplyPort, (struct Message *) &XiMsg);  /* Warten auf Reply, siehe Fkt. unten */
  62.       DeletePort (XiReplyPort);
  63.  
  64.     }
  65.   }
  66.  
  67. }
  68.